초기화 블록(Initialization block)
✒️ 2025-05-15 13:18 내용 수정
클래스 필드의 초기화만을 담당하는 중괄호{}로 둘러싸인 블록
- 생성자보다 먼저 호출된다.
- 인스턴스 초기화 블록과 클래스 초기화 블록으로 나뉜다.
1. 인스턴스 초기화 블록
- 단순히 중괄호
{}만 사용하여 정의한다. - 생성자처럼 인스턴스가 생성될 때마다 실행되지만, 생성자보다 먼저 실행된다.
class Exam {
int score; // 인스턴스 변수
{ score = 0; } // 인스턴스 초기화 블록, 생성자보다 먼저 실행되므로 score = 0;
Exam(int score) { this.score = score; } // 생성자를 통한 초기화
}
2. 클래스 초기화 블록
- 인스턴스 초기화 블록에 static 키워드를 추가하여 정의한다.
- 제어자#2. 기타 제어자 참고.
- 클래스 변수의 초기화를 수행할 때 사용한다.
- 클래스가 처음으로 메모리에 로딩될 때 단 한번만 실행된다.
class Exam {
static int date; // 클래스 변수
int score; // 인스턴스 변수
static { date = 10; } // 클래스 초기화 블록
}
필드의 초기화
- 초기화하지 않아도 변수 타입에 맞는 초깃값으로 자동 초기화된다.
- 지역 변수와 마찬가지로 적절한 값으로 초기화한 후에 사용하는 것이 좋다.
- 방법
- 명시적 초기화
- 생성자를 이용한 초기화
- 초기화 블록을 이용한 초기화
- 순서
- 클래스 변수(static variable) : 기본값 -> 명시적 초기화 -> 클래스 초기화 블록
- 인스턴스 변수 : 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블록 -> 생성자